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

制作于2017年12月23日

价格 免费

控制玩家移动,

获得轴上的值。

GetAxisRaw 

配合 transform.Translate.没有物理效果就用这个。

方向, 坐标轴(世界)

 

[展开全文]

以米为单位。创建cube来对比大小。

gizoms 记得勾选上。

创建预制体。

直接改变sprite render的图片。

创建动画。

将图片一起放上去。

 

[展开全文]

摄像机。 size 8.5 背景黑色。 5:4窗口 

一点一点调试。

给素材加工。把图集裁剪。

Texture Mode 变成UI.

单张图片Single

图集 mutiple.图集。需要切割。

Prite Editor 进行切割。 

slice 自动切割。 slice 切割。

第二个以固定格来切。

调整。先获得数值,然后第二个,设置一下,切割。

 

[展开全文]

碰撞 

两个物体身上有碰撞器

其中一方是刚体 一般在运动的一方上

因为刚体会休眠 就不会发生碰撞jian'c

[展开全文]

图片使用SpriteRender组件控制。

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

[展开全文]

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

 

[展开全文]

private SpriteRenderer sr;

private void Awake

   sr =

第一张是0

第二张是8

第三张是16

第四张是24

第五章是28

[展开全文]

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

 

Animation:用来存储动画

AnimatorController:用来存储动画控制器

BornController:控制器

Effect:特效文件夹

Explosion-Explode:爆炸

Shield:庇佑、屏障、保护盾

River:河流

[展开全文]

FixedUpdate():固定物理帧;每帧都是执行固定的;

[展开全文]

GetAxis()与GetAxisRow();相似

Time.deltaTime:按照每秒移动

Space.World:世界坐标轴;

float h=Input.GetAxisRow("Horizontal")

transform.Translate(Vector3.Right*h )

//h返回值1到-1的float类型的小数;

float v=Input.GetAxisRow("Vertical")

transform.Translate(Vector3.up*h)

 

[展开全文]

Texture Type(贴图显示):默认Default;

改成Sprite(2D and UI))点击Apply;

[展开全文]

tranaform.Translate();

如果第一个参数填沿着世界坐标系移动,第二个参数可以不填也可以填Space.self;

如果第一个参数填沿着自身某个方向移动,第二个参数必须填Space.World;

[展开全文]

解决人物斜划的问题:

添加优先级先执行“V”在执行“H”

if (v!=0){return;}

渲染优先级

Sorting Layer

Order in Layer(数值)

[展开全文]

固定物理帧

private void FixedUpdate(){添加刚体物体的所有指令}

[展开全文]

实例化:

Instantiate(item[0],new Vector(0,-8,0),Quternion(0,0,0));

[展开全文]

调用

collision.Sendmessage("Die")

区别玩家和敌人的子弹

 

public bool isplayerBullet;

 

if (!isplayerBullet)

{

collision.SendMessge("Die");}

Destroy (collision.gameObject;

Destroy(gameObject);

障碍;

Destroy(gameObject);

 

heart d 改变:

private SpriteRenderer sr;

void Start(){

sr = GetComponet<SpriteRenderer>();}

public void Die(){
}

[展开全文]

transform.Translate(transform.up*movespeed*Time.deltaTime,Space.World);

[展开全文]

public float moveSpeed=3;

 

 

 

Input.GetAxisRaw("Horizantal");

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

Input,GetAxisRaw("Vertical");

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

[展开全文]

游戏目标,敌人向下攻击

[展开全文]