游戏开发之角色移动的一些代码

浅谈个人认知的几种方法

一:通过Transform组件来移动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Move : MonoBehaviour {


    public float MoveSpeed = 2f;
    public GameObject gameobject;


    void Update()
    {
       if(Input.GetKey(KeyCode.W))
        {
            gameObject.transform.Translate(Vector3.forward * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.S))
        {
            gameObject.transform.Translate(Vector3.back * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.A))
        {
            gameObject.transform.Translate(Vector3.left * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.D))
        {
            gameObject.transform.Translate(Vector3.right * Time.deltaTime);
        }


    }
}

二:通过添加刚体 获得刚体组件添加力来移动

public class MoveTest02 : MonoBehaviour {
    //这个方法会受到物理因素的影响
    public GameObject sphere;
    public Rigidbody sphereRigdbody;

    void Update () {
        if (Input.GetKey(KeyCode.W))
        {
            sphereRigdbody.AddForce(Vector3.forward*15f*Time.deltaTime, ForceMode.Impulse);
        }
        if (Input.GetKey(KeyCode.S))
        {
            sphereRigdbody.AddForce(Vector3.back*15f * Time.deltaTime, ForceMode.Impulse);
        }
        if (Input.GetKey(KeyCode.A))
        {
            sphereRigdbody.AddForce(Vector3.left*15f * Time.deltaTime, ForceMode.Impulse);
        }
        if (Input.GetKey(KeyCode.D))
        {
            sphereRigdbody.AddForce(Vector3.right*15f * Time.deltaTime, ForceMode.Impulse);
        }
    }
}
添加Rigibody后通过horizontal与Vertical的判定来实现物体的移动
public class MoveTest03 : MonoBehaviour {

    public int speed = 5;
    public float H;
    public float V;

    void Update () {
        H = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
        V = Input.GetAxis("Vertical") * Time.deltaTime * speed;
        this.gameObject.transform.Translate(H, 0, V);
    }
}


猜你喜欢

转载自blog.csdn.net/flower_stealth/article/details/80004982