坦克移动

  我们在Update方法之下,加一个固定更新方法FixedUpdate,然后写一个move方法,来控制玩家的移动。我们看以下代码:

void FixedUpdate(){
move ();
}
void move()
{
float rl=Input.GetAxisRaw(“Horizontal”);
transform.Translate (Vector3.right * moveSpeed * rl * Time.fixedDeltaTime, Space.World);
if (rl != 0)
return;
float ud=Input.GetAxisRaw(“Vertical”);
transform.Translate (Vector3.up * moveSpeed * ud * Time.fixedDeltaTime, Space.World);
}
我们写过这样的代码之后,保存了代码,等待U3d编译之后,就可以发现坦克可以动了。但是这个时候就会发现很别扭,因为我们无论朝哪个方向走,我们的坦克头都是朝上的。这时候,我们用这个方法补救。
声明私有SpriteRenderer类型sr,调用Awake方法。声明一个Sprite数组 用来存储四个方向坦克的图片,之后在move方法里判断上下左右方向,然后编译。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
public float moveSpeed=10; //the tank move speed
private SpriteRenderer sr;
public Sprite[] tankSprite; //up right down left
private void Awake(){
sr = GetComponent ();
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void FixedUpdate(){
move ();
}
//Player’s move
void move(){
//right and left
float rl=Input.GetAxisRaw(“Horizontal”);
transform.Translate (Vector3.right * moveSpeed * rl * Time.fixedDeltaTime, Space.World);
if (rl < 0)
sr.sprite = tankSprite [3];
else if (rl > 0)
sr.sprite = tankSprite [1];
if (rl != 0)
return;
//up and down
float ud=Input.GetAxisRaw(“Vertical”);
transform.Translate (Vector3.up * moveSpeed * ud * Time.fixedDeltaTime, Space.World);
if (ud < 0)
sr.sprite = tankSprite [0];
else if (ud > 0)
sr.sprite = tankSprite [2];
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值