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

制作于2017年12月23日

价格 免费

渲染优先级(图层。次序、)

Sorting Layer 大层级

order in Layer 小层级,在大层级里设定优先级

[展开全文]

Instantiate(BulletPrefab, transform.position, transform.rotation);

实例化(物体名,位置,旋转角度)

 

Input.GetKeyDown(KeyCode.Space)

把一个欧拉角变成一个四元数变量,使得其可以在实例化函数中使用

使用此,API

Quaternion.Euler(transform.eulerAngles+bulletEulerAngles)

[展开全文]

碰撞事件,需要有碰撞器,至少有一方是有刚体的,最好是运动的一方

防止抖动方法,FixedUpdate

[展开全文]

实际上,你是从屏幕内往外看,2D游戏的UI度数调整和3D刚好相反

2D顺时针旋转90°是-90°

因为,我们是从屏幕内侧往外看(参照坐标系,Z指向屏幕外。)

 

 

[展开全文]

把空气墙,家园墙做成预制体,实例化预制体就行了。

[展开全文]

1) package 文件拖入到 Asset 面板

2) 

[展开全文]

两方都有碰撞器,运动的一方要有刚体。

碰撞体分两类为2D和3D

 

[展开全文]

Prefabs:用来存储预制体(场景中的角色物体)

 

Animation:用来存储动画

AnimatorController:用来存储动画控制器

BornController:控制器

Effect:特效文件夹

Explosion-Explode:爆炸

Shield:庇佑、屏障、保护盾

River:河流

[展开全文]

按住shift拖拽可以多选,可以制作动画

[展开全文]

public float movespeed=3;

    // 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 );
        float v = Input.GetAxisRaw("Vertical");
        transform.Translate(Vector3.up*v*movespeed*Time.deltaTime ,Space.World);
 

[展开全文]

private SpriteRenderer sr;

private void Awake

   sr =

第一张是0

第二张是8

第三张是16

第四张是24

第五章是28

[展开全文]

第一个参数沿着世界坐标系移动,第二个参数可以不添也可以添Space.self 如果沿着物体方向移动第二个参数必须填Space.World

 

[展开全文]

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];
        }
    }
}
 

[展开全文]

图片使用SpriteRender组件控制。

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

[展开全文]

授课教师

SiKi学院老师

课程特色

图文(1)
视频(32)
下载资料(1)