Unity3D 物体运动小游戏

简介: 目录一、在Hierarchy窗口中创建场景,之后塑造一个平面作为地板,将元件命名为background。再创建一个正方体,命名为player。

目录

一、在Hierarchy窗口中创建场景,之后塑造一个平面作为地板,将元件命名为background。再创建一个正方体,命名为player。

二、在project窗口中创建两个folder文件夹。一个命名为材料material,一个命名为脚本scripts。

三、编写playermove移动的代码。

四、设置敌人物体


一、在Hierarchy窗口中创建场景,之后塑造一个平面作为地板,将元件命名为background。再创建一个正方体,命名为player。

二、在project窗口中创建两个folder文件夹。一个命名为材料material,一个命名为脚本scripts。

在material文件夹中创建两个material,调整颜色,创建好之后直接拖动到player和background之上。在scripts文件夹中创建C# 脚本文件,命名为playermove。双击脚本文件,在VS中打开。

三、编写playermove移动的代码。

需要在player原件中添加刚体,否则物体不能受力。

接下来在VS中的脚本代码中进行物体移动的编码。然后把playermove脚本拖动到player元件上。点击运行,按下WASD四建就可以对正方体player进行移动操作了。

public class playermove : MonoBehaviour {
    
    public float moveSpeed; //移速
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
        //获取键盘数值
        //var 自动匹配目标类型
        var move = new Vector3(Input.GetAxisRaw("Horizontal"),0,Input.GetAxisRaw("Vertical")); //构建一个向量,获取X,Y,Z三轴的变量
        var rigidbody = GetComponent<Rigidbody>();
        rigidbody.AddForce(move * moveSpeed);  //给刚体添加一个力

	}
}

 

 如果不想让正方体滚动,可以在刚体rigidbody中的Constraints的选项中把Freeze Rotation中的x,y,z全部锁定。物体的移动就会变成平移。

四、设置敌人物体

与创建player方块相同,创建enemy敌人方块。创建一个patrol脚本,将脚本拖动到enemy元件上。打开patrol,进行物体固定轨道移动的编码。

patrol脚本的代码如下: 

public class patrol : MonoBehaviour {

    public GameObject[] gameObjectArray; //建一个数组 也可以写作public List<GameObject> gameObjectList;
    public int index = 0;   //设置数组索引
    public float moveSpeed; //移速

    // Use this for initialization
    void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {   //Update是每帧来计算的,游戏每一帧会运行update一次
        //设置物体缓慢移动的方法MoveToward(current/当前的位置,target/目标位置,maxDistanceDelta)
        //添加了Time.deltaTime是时间增量,渲染完上一帧的时间
        transform.position = Vector3.MoveTowards(transform.position,gameObjectArray[index].transform.position,moveSpeed * Time.deltaTime); //这是新的移动位置,把新的位置赋值给position
    }
}

回到unity界面,新建三个空坐标

移动三个位置

 点击enemy,将GameObject拖动到Game Object Array中,可以自己设置Move Speed的速度。

现在只是运行了一次数组中enemy的行动,所以对patrol的代码进行修改,结果如下:

public class patrol : MonoBehaviour {

    public GameObject[] gameObjectArray; //建一个数组 也可以写作public List<GameObject> gameObjectList;
    public int index = 0;   //设置数组索引
    public float moveSpeed; //移速

    // Use this for initialization
    void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {   //Update是每帧来计算的,游戏每一帧会运行update一次
        //设置物体缓慢移动的方法MoveToward(current/当前的位置,target/目标位置,maxDistanceDelta)
        //添加了Time.deltaTime是时间增量,渲染完上一帧的时间
        if (index > gameObjectArray.Length-1) //如果索引超出数组下标
        {
            index = 0;
        }
        transform.position = Vector3.MoveTowards(transform.position,gameObjectArray[index].transform.position,moveSpeed * Time.deltaTime); //这是新的移动位置,把新的位置赋值给position
        if (transform.position== gameObjectArray[index].transform.position) //判断,如果地址等于目标地址
        {
            index++;

        }
    }
}

返回unity3d运行,enemy元件就会循环运动。

 

编写成果:https://download.csdn.net/download/qq_36171287/10789964

目录
相关文章
|
5月前
|
图形学
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
147 0
|
11月前
|
图形学
Unity小游戏——迷你拼图
Unity小游戏——迷你拼图
239 1
|
11月前
|
图形学
Unity小游戏——使被砍中的怪物四处飞散
Unity小游戏——使被砍中的怪物四处飞散
|
11月前
|
图形学
unity小游戏——得分高低的判定
unity小游戏——得分高低的判定
|
11月前
|
机器学习/深度学习 算法 图形学
Unity小游戏——无限滚动的背景的改良
Unity小游戏——无限滚动的背景的改良
100 0
|
11月前
|
算法 图形学
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
|
6月前
|
图形学
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
|
11月前
|
图形学
Unity小游戏——武士和怪物的碰撞检测
Unity小游戏——武士和怪物的碰撞检测
|
11月前
|
图形学
Unity小游戏——怪物出现模式的管理
Unity小游戏——怪物出现模式的管理
121 0
|
图形学
Unity实现2D小游戏
Unity实现2D小游戏FirstGame2D(Sunny Land) 一、游戏说明 本游戏为作者的第一个实验的2D小游戏 实现效果: (1)简单的UI界面以及触发按钮、滑动按钮事件 (2)通过按钮与按键实现场景的切换 (3)通过代码实现动画效果的切换(跳跃、蹲下等) (4)碰撞体以及触发器实现消灭敌人、收集物品、地面检测 (5)相机场景与背景运动差,实现场景与人物的立体效果,达到较好的视觉效果 (6)SoundMananger实现场景音乐的管理
253 0
Unity实现2D小游戏