Unity3D 之 坦克大战(一)

坦克大战学习笔记

1. 工程创建、素材导入;
2. 游戏中预制体的制作(环境预制体和动画预制体)
<1> 环境预制体制作:
游戏物体Player;
墙体Wall;
障碍物Obstacle;
水流River;
小草Gress;
老窝Family;
<2> 动画预制体:
坦克本身自带出场效果Shild;
坦克发射子弹效果Born;
坦克爆炸效果Explosion;

3. 控制游戏中Player的移动
<1> 获取水平和垂直方向上的变化;

float h = Input.GetAxis("Horizontal"); // 水平方向 返回值为1或-1
float v = Input.GetAxis(""Vertical); // 垂直方向

<2> 给游戏物体添加水平和垂直方向上的速度;

public float speed = 10.0f;
tansform.Translate(Vector3.right * h * speed * Time.deltaTime);// 水平
tansform.Translate(Vector3.up * v * speed *Time.deltaTime);// 垂直

4. 控制游戏在左右移动过程中,坦克图片(方向)切换
<1> 通过控制切换图片来控制坦克的方向移动;
a. 首先创建SpriteRenderer的对象sr;

private SpriteRenderer sr;

b. 然后通过sr来获取SpriteRenderer的引用;

sr = GetComponent<SpriteRenderer>();

c. 其次定义坦克需要切换的数组;

public Sprite[] tankSprite;

d. 将所需要的图片拖入Tank Sprite中;
e. 通过判断h/v的是否大于0来判断选用那张图片。

if(h > 0)
{
	// right    
    sr.sprite = tankSprite[1];
}
else if(h < 0)
{
	// left
    sr.sprite = tankSprite[3];
}

<2> 通过控制Z轴的方向来控制坦克的方位旋转。

5. 碰撞器的添加
发生碰撞的条件:
发生碰撞的两个物体,身上必须有碰撞器,其中一方身上必须要有刚体,并且要是能运动的。
碰撞器分类:2D碰撞器和3D碰撞器
<1> 给Player和环境预制体(除Gress外)添加Box Collider 2D碰撞器;
<2> 给Player添加刚体Rigidbody 2D;
<3> 设置Player游戏对象身上的Constraints的Z轴的旋转,防止发生旋转。

解决抖动问题:
c产生都抖动的问题
Player本身添加了刚体,发生碰撞后,物体之间会产生作用力,放在在Update下的话每帧的作用力是不同的,所以需要将Update的处理放置在FixedUpdate()函数中处理。

private void FixedUpdate() 
{
	// 监听水平和垂直方向上的位置
    float h = Input.GetAxisRaw("Horizontal");// 返回值是1或-1
    transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);
    
    if(h > 0)
    {// right
        sr.sprite = tankSprite[1];
    }
    else if(h < 0)
    {// left
        sr.sprite = tankSprite[3];
    }

    float v = Input.GetAxisRaw("Vertical");
    transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);

    if (v > 0)
    {// right
        sr.sprite = tankSprite[0];
    }
    else if (v < 0)
    {// left
        sr.sprite = tankSprite[2];
    }
}

6. 移动优先级的添加,2D渲染层级问题
<1> 问题:玩家同时按住两个键的时候,Player会斜着走,如何处理该问题?
if(v!=0) return;
<2> 2D渲染层级问题
Player层级设置:
Sorting Layer 添加层级(大层级)
Order in Layer (小层级) 值越大越后渲染

猜你喜欢

转载自blog.csdn.net/QIJINGBO123/article/details/86537385