3月5日
今天依旧没有开学
开始学习做一个新的项目,坦克大战demo项目
首先是很普通的右手就行的构建游戏场景,背景色调为黑色,将镜头设为5:4,camera的size设为8.5,这两个值在自己设计游戏时需要反复实验修改,得到最好的用户体验。
导入的图片资源需要注意的要点:
1.需要将图片资源的Texture Type设为Sprite
2.如果是多个图片的裁剪图集,还需要将Sprite Mode设为multipl
关于如何将图集切割为多张图片:
在图片的Inspector中,点击Sprite Editor选项,即可进入切割界面。
然后是创建所有需要的Prefabs,Animation,AnimatorController,这也是很常规的内容,不做赘述。
接下来首先开始编写脚本控制player的移动,创建player脚本,在脚本中进行操作
void Update()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
//移动方法,(x轴/y轴判别*输入参数*移动速度*时间*参考坐标系)
transform.Translate(Vector3.right * h * MoveSpeed * Time.deltaTime, Space.World);
transform.Translate(Vector3.up * v * MoveSpeed * Time.deltaTime, Space.World);
}
这里要注意,和之前的移动方法是两种,之前的是通过刚体以及改变目标位置的方式来移动,这次是直接通过移动方法来移动
然后是坦克的转向问题,有两种解决方案,第一种是在转向时调用相应的朝向的素材图片,第二种是直接使图片绕Z轴进行旋转
这里先运用第一种方法,因为prefab用哪张图片的显示是通过Sprite Renderer渲染器控制的,因此只需要在脚本中得到渲染器组件的引用,然后再转向的时候更改成对应的图片素材即可
获得组件和对应图片
private SpriteRenderer sr;
public Sprite[] TankSprite;
private void Awake()
{
sr = GetComponent<SpriteRenderer>();
}
判断及旋转
if(h < 0)
{
sr.sprite = TankSprite[3];
}
else if (h > 0)
{
sr.sprite = TankSprite[1];
}
if (v < 0)
{
sr.sprite = TankSprite[2];
}
else if (v > 0)
{
sr.sprite = TankSprite[0];
}
来源:CSDN
作者:Z3Djoker
链接:https://blog.csdn.net/Z3Djoker/article/details/104676494