25729人加入学习
(149人评价)
Unity2D 初级案例 - 坦克大战(Unity2017.1)

制作于2017年12月23日

价格 免费

 

切换图片的渲染和显示

拿到组件的引用,改一下属性

 

 

 

 

图片沿着Z轴做旋转

 

 

 

 

 

[展开全文]

控制图片的移动与切换

随方向改变图片朝向

法一 更改图片显示  素材里有顺序各方向图片

改渲染器中的sprite 就能改图片

在代码中拿到sprite的引用

在上面 拿到引用(定义一个变量,再用getcomponent)注意拿引用的特殊写法

拿到要切换的图片的引用 (0,8,16,24上右下左 记好顺序)搞一个数组 直接把这几张图拖到inspector 面板里的数组里

tips 在project 上端把素材排列由一行 改为两行可以显示图片

下面用输入监听变量的返回值 判断一下h/v的正负 if else if h< 0是zuo

图片切换就像变量赋值 此时的数组中括号内的值是拿到数组以后的顺序了

法二  根据不需要的z轴来控制旋转

[展开全文]

private SpriteRenderer sr;

public Sprite[] tankSprite; (直接拖到数组里)

 

 sr = GetComponent<SpriteRenderer>();

 

if (h<0)

{

    sr.Sprite = tankSprite[3];

}

else if (h>0)

{

    sr.Sprite = tankSprite[1];

}

[展开全文]

 

public Sprite[] tankSprite;

上右下左

 

[展开全文]

public class player : MonoBehaviour {
    public float movespeed=3;
    private SpriteRenderer sr;
    public Sprite[] tankSprite;
    private void Awake()
    {

        sr = GetComponent<SpriteRenderer>();
    }

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        float h = Input.GetAxisRaw("Horizontal");
        transform.Translate(Vector3.right*h*movespeed*Time.deltaTime,Space.World );
        if (h < 0){
            sr.sprite = tankSprite[3];
        }else if (h > 0)
        {
            sr.sprite = tankSprite[1];
        }

        float v = Input.GetAxisRaw("Vertical");
        transform.Translate(Vector3.up*v*movespeed*Time.deltaTime ,Space.World);
        if(v<0){
            sr.sprite = tankSprite[2];
        }else if (v > 0)
        {
            sr.sprite = tankSprite[0];
        }
    }
}
 

[展开全文]

 2D转向效果实现。

1.更换图片,

2.旋转角度。

更改Sprite Render的图片。

 

[展开全文]

图片使用SpriteRender组件控制。

改变坦克移动时的朝向:(1)使用代码控制多张图片进行轮换;(2)代码控制单张图片进行旋转

[展开全文]

private SpriteRenderer sr;

private void Awake

   sr =

第一张是0

第二张是8

第三张是16

第四张是24

第五章是28

[展开全文]

水平=h   Horizontal

垂直=v   Vertical

public float moveSpeed=3;    //声明一个移速,默认=3

private SpriteRenderer sr;   //声明一个私有的SpriteRenderer 常量为“sr”

private void Awake(){
    sr=GetComponent<SpriteRenderer>();
}

 

 

[展开全文]

坦克移动时改变显示

获得精灵渲染

精灵数组

把图片拖入数组 

[展开全文]

hとvの値で方向をコントロール

全ての参照はAwakeの中設定

[展开全文]

Input.GetAxisRaw(); 比 Input.GetAxis():

具体的区别不清楚,但是在测试时无意间发现,前者比后者接收的按键的速度更快的样子,在按键时图片的切换功能,使用了后者的话,明显感觉到了延迟感。

原来前者是返回的只有0或1,-1,而后者是包含之间的小数点。

[展开全文]

定义一个精灵类型的数组:

private SpriteRenderer sr;
 public Sprite[] tankSprites;

 

精灵

 

if (h<0)
        {
            sr.sprite = tankSprites[3];
        }else if(h>0 )
        {
            sr.sprite = tankSprites[1];
        }  
 if (v < 0)
        {
            sr.sprite = tankSprites[2];
        }else if (v>0)
        {
            sr.sprite = tankSprites[0];
        }

 

[展开全文]

方法一:

通过素材的图片控制Player的方向转动

Player

private SptiteRenderer srl

Update()

 

 

[展开全文]