1
我想在2D遊戲中爲我的角色創建一個動作腳本,但是我無法獲得正確的raycast。我只是想能夠移動我想要的任何方向,直到我進入距物體一定距離內。然後我想讓它停止移動,我做錯了什麼?我的光線廣播全部返回0.Raycast Unity運動腳本
using UnityEngine;
using System.Collections;
public class Character : MonoBehaviour
{
[SerializeField]
private float speed;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
RaycastHit2D hitUp = Physics2D.Raycast(transform.position, -Vector2.up);
RaycastHit2D hitDown = Physics2D.Raycast(transform.position, -Vector2.down);
RaycastHit2D hitLeft = Physics2D.Raycast(this.gameObject.transform.position, -Vector2.left, 10.0f);
RaycastHit2D hitRight = Physics2D.Raycast(transform.position, -Vector2.right);
if (Controller.player == 1)
{
if (Input.GetKey(KeyCode.A) && hitLeft.distance > 1)
{
transform.position += Vector3.left * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.D) && hitRight.distance > 1)
{
transform.position += Vector3.right * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.W) && hitUp.distance > 1)
{
transform.position += Vector3.up * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.S) && hitDown.distance > 1)
{
transform.position += Vector3.down * speed * Time.deltaTime;
}
}
else
{
if (Input.GetKey(KeyCode.J) && hitLeft.distance > 1)
{
transform.position += Vector3.left * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.L) && hitRight.distance > 1)
{
transform.position += Vector3.right * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.I) && hitUp.distance > 1)
{
transform.position += Vector3.up * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.K) && hitDown.distance > 1)
{
transform.position += Vector3.down * speed * Time.deltaTime;
}
}
}
}