Unity C#Script移动角色2D

时间:2015-03-28 13:12:02

标签: c# unity3d scripting

我试图制作一个脚本来控制角色。我希望角色向右移动一定距离,同时交替左箭头然后右箭头输入。理想情况下,当我开始游戏时,我按下正确的箭头 - 角色向右移动说10px,然后按向左箭头 - 角色向右移动,此模式继续交替,并且在彼此之后永远不允许两个相同的输入,例如:左箭头左ARROW或右箭头右箭头。

3 个答案:

答案 0 :(得分:1)

结束了这个,但感谢你的帮助:D

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

    public float moveSpeed;
    public float jumpHeight;
    private KeyCode lastHitKey;

    void Start()
    {
    }

    void Update()
    {
        if(Input.GetKeyDown (KeyCode.Space))
        {
            GetComponent<Rigidbody2D>().velocity = new Vector2(0, jumpHeight);
        }


        if(Input.GetKeyDown (KeyCode.D))
        {
            if(lastHitKey == KeyCode.D)
            {

            }else
            {
                GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, 0);
                lastHitKey = KeyCode.D;
            }
        }


        if(Input.GetKeyDown (KeyCode.A))
        {
            if(lastHitKey == KeyCode.A)
            {

            }else
            {
                GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, 0);
                lastHitKey = KeyCode.A;
            }
        }
    }
}

答案 1 :(得分:0)

一个快速解决方案(可能不是最好的)是声明2个布尔值,让我们说布尔右,左并将它们设置为假。 在按下某个键后的事件中,让我们说出正确的键:

{
    right=true;
    if(left==true)
        //move character
    left=false;
}

,左键是

 {
    left=true;
    if(right==true)
        //move character
    right=false;
}
这样,除非右箭头和左箭头交替出现,否则角色不会移动。

答案 2 :(得分:0)

而不是使用&#34; KeyCode.A&#34;在if语句中你可以写:

if(GetComponent<RigidBody2D>().velocity.x < maxSpeed){
    GetComponent<RigidBody2D>().AddForce(new Vector2(Input.GetAxis("Horizontal") * Time.deltaTime * speedMult, 0));
}