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

制作于2017年12月23日

价格 免费

通过建立访问数组来解决图片方向的问题

[展开全文]

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

防止抖动方法,FixedUpdate

[展开全文]

图集与单图区别

Texture Type都一样是Sprite UI 2D

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

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

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

[展开全文]

两个碰撞体

box 2d

private void fixedupdate(){}

[展开全文]

public float movespeed=3;

float h=Input.getaxisraw( "horzontal");

transfom.translate(vector3.right*h*movespeed*time.deltatime,space.world);

float v=Input.getaxisraw( "vertical");

transform.translate(vector3.up*v*movespeed*time.deltatime,space.world);

[展开全文]

 第一次学习时间2018-01-22

 
 
G
M
T
 
 
Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
 
AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
 
 
 
 
 
 
 
 
 
Text-to-speech function is limited to 200 characters
 
 
Options : History : Feedback : Donate Close
[展开全文]
  1. 将Defended特效拖到player下是拖游戏物体,不是拖预制体
  2. Defended reset完后无需点apply,在Player那点apply
[展开全文]

2D和3D的旋转角度是相反的。不相同的

[展开全文]

碰撞检测的两个必要条件

1、组件身上要有碰撞器

2、其中一方要有刚体(最好是运动的一方)。

原因:刚体长时间不运动会休眠就不会发生碰撞检测。

每一帧受力是相同的,不能发生变化。所以放到物理帧中:FixedUpdate();

 

[展开全文]

代码控制图片移动切换:

private SpriteRenderer sr;

public Sprite[] tankSprite;

private void Awake(){

sr=GetComponent<spriteRenderer>();

}

if(h<0)

{

sr.sprite=tankSprite[3];

}

else if(h>0)

{

sp.sprite=tankSprite[1]

}

[展开全文]

移动代码:

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);

}

[展开全文]

quaternion.euler(tranform.eulerangles+bullerangles)

euler欧拉角转四元数 

[展开全文]

碰撞器的生成

二者都要有碰撞器

其中一方(运动的一方)要有缸体

fixedupdate 物理针

是每一秒受力固定

缸体碰撞受力使物体发生抖动,添加物理针处理

未加物理针

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

    }

添加物理针

  private void FixedUpdate()
    {
        float h = Input.GetAxisRaw("Horizontal");
        transform.Translate(Vector3.right * h * movespeed * Time.fixedDeltaTime, 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.fixedDeltaTime, Space.World);
        if (v < 0)
        {
            sr.sprite = tanksprite[2];
        }
        else if (v > 0)
        {
            sr.sprite = tanksprite[0];
        }
    }

[展开全文]

PlayerMove  Script:

publix float moveSpeed=3;//定义速度

void Start(){

 

}

void Update(){

    float h = Input.GetAxisRam("Horizontal");

transform.Translate(Vector3.right*h*moveSpeed*Time.deltaTime,Space.World);

float v = Input.GetAxisRam("Vertical");

transform.Translate(Vector3.up*v*moveSpeed*Time.deltaTime,Space.World);

}

[展开全文]