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

制作于2017年12月23日

价格 免费

碰撞

box  

刚体

ridibody

对于刚体碰撞抖动的问题,因为Time.deltaTime 所应用的每一帧的运行和电脑性能有关,导致时间不同所受的力也不同 要用FixedUpdate固定 物理帧的更新函数解决问题。和Time.fixedTime

 

[展开全文]
if(Input.GetkeyDown(KeyCode.Space))
{
 Instantiate()
}

 tank的攻击方法

 

[展开全文]

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

全ての参照はAwakeの中設定

[展开全文]

case "Tank":
                if(isPlayerBullect)//不是玩家的子弹
                {
                    collision.SendMessage("Die");
                }
                break;

[展开全文]

transform.position,transform.rotaion

Destroy(gameObject, 0.2f);

explosionPrefab

private fooat defendTimeVal;

defendEffectPrefab

[展开全文]

isPlayerBullect

Destroy(collision.gameObject

SpriteRenderer sr

sr=GetComponent

Sprite BrokenSprite

sr.sprite=BrokenSprite

[展开全文]

public float moveSpeed = 3;

 

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;

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

 

 sr = GetComponent<SpriteRenderer>();

 

if (h<0)

{

    sr.Sprite = tankSprite[3];

}

else if (h>0)

{

    sr.Sprite = tankSprite[1];

}

[展开全文]

本章AI人工智能:并非AI,而是随机数

[展开全文]

图集与单图区别

Texture Type都一样是Sprite UI 2D

Sprite Mode不一样,图集是多个图片的集合,用的是Multiple,单图用Single

图集剪切成多张小图才可以用

点击Sprite Editor剪辑图集,调整好长度和高度按格子剪辑。

[展开全文]

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

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

 

[展开全文]

碰撞添加,两个关键组件

boxcollider2d 碰撞检测

rigidbody2d  二维刚体

 

 

固定物理桢(防抖,按照每帧运行,)

 private void FixedUpdate()

 

[展开全文]

pubkic GameObject 

Instantiate(explosionPrefab,transform.position,transform.rotation)

Instantiate(transform.position,Quaternion.identity

Destroy(gameObject,0.8f)

[展开全文]

这届是导入没有什么的主要内容

[展开全文]

发生碰撞的两个物体必须都要持有碰撞器
其中之一(运动者最好持有刚体)

经常不运动的情况下,刚体插件容易休眠,休眠之后就不会进行碰撞检测,所以一般放在运动物体之上。

碰撞器分为2D和3D的两种碰撞器

使用Input.GetAxisRaw/GetAxis 来获取在水平和垂直轴上的输入状态(有输入为1没有则为-1)
使用sprite组建来控制目标显示的图形
通过添加Spirte数组来控制图形的改变和显示

 

不要忘记锁上刚体组件的Z轴(2D游戏)

 

fixedUpdate (固定物理帧):

电脑与电脑之间每一帧运行的时间不一致,如果在FIXEDUPDATE里执行,每一帧所占用的时间是固定的,FixedUpdate固定在Update之后执行。

 

当有刚体影响时,最好在FixedUpdate里执行更新,这可以保证每帧的受力均匀

[展开全文]