你好我在我的2.5D iso透视多人游戏中使用了这个脚本并且没有让它工作。我认为这可能是因为我使用的多人游戏组件。问题可能是什么想法?我在Unity / Unet的多人示例项目中使用此代码。即使只是提示也会受到高度赞赏
using UnityEngine;
using System.Collections;
[DisallowMultipleComponent]
public class PlayerControlerCTM : MonoBehaviour{
[SerializeField][Range(1,20)]
private float speed = 10;
private Vector3 targetPosition;
private bool isMoving;
const int LEFT_MOUSE_BUTTON = 0;
// Use this for initialization
void Start () {
targetPosition = transform.position;
isMoving = false;
}
// Update is called once per frame
void Update () {
if (!isLocalPlayer)
{
return;
}
if (Input.GetMouseButton(LEFT_MOUSE_BUTTON))
{
SetTargetPosition();
}
if(isMoving)
{
MovePlayer();
}
}
void SetTargetPosition()
{
Plane plane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float point = 0f;
if(plane.Raycast(ray, out point))
{
targetPosition = ray.GetPoint(point);
}
}
void MovePlayer()
{
transform.LookAt(targetPosition);
transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);
if(transform.position == targetPosition)
{
isMoving = false;
}
Debug.DrawLine(transform.position, targetPosition, Color.red);
}
}
答案 0 :(得分:0)
您的播放器没有移动,因为您从未更改 isMoving 的值,您已设置 false 。 试试这个:
void SetTargetPosition()
{
Plane plane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float point = 0f;
if(plane.Raycast(ray, out point))
{
targetPosition = ray.GetPoint(point);
}
isMoving = true; // ADD THIS LINE
}