1
2d 유니티 게임에서 캐릭터의 동작 스크립트를 만들려고하는데 레이크 캐스트를 제대로 가져올 수 없습니다. 나는 단지 내가 어떤 방향으로 움직일 수 있기를 바란다. 내가 어떤 방향으로 움직일 때까지. 그럼 내가 움직이는 걸 막으려 고, 내가 뭘 잘못 했니? 내 레이 캐스트가 모두 0으로 돌아갑니다.Raycast Unity Movement Script
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;
}
}
}
}