c# - 如何始终将方向更改为旋转角度?
问题描述
我在下面有这个脚本,我希望我的玩家总是朝着旋转角度移动,这不会发生。只有当我点击时它才会改变方向。
我的目的是让玩家始终移动并朝着应该由鼠标位置/鼠标 x 轴控制的旋转(有点像自动运行,但总是根据鼠标改变旋转,而不仅仅是向右或向左移动)。
我已经尝试了大约 10 种不同的方法,到目前为止没有任何效果......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovementController : MonoBehaviour
{
public float speed = 4;
public float rot = 0f;
public float rotSpeed = 80;
public float gravity = 8;
private Camera cam;
Vector3 moveDir = Vector3.zero;
CharacterController controller;
Animator anim;
// Start is called before the first frame update
void Start()
{
controller = GetComponent<CharacterController> ();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
float horizontalSpeed = 8.0f;
//Get the mouse delta. This is not in the range -1...1
float h = horizontalSpeed * Input.GetAxis("Mouse X");
float z = horizontalSpeed * Input.GetAxis("Mouse Y");
transform.Rotate(0, h, 0);
//Move Input
if(controller.isGrounded){
if(Input.GetMouseButtonUp(1))
{
anim.SetInteger ("condition", 1);
moveDir = new Vector3 (0,0,1) * speed;
// moveDir *= speed;
moveDir = transform.TransformDirection(moveDir);
}
if(Input.GetMouseButtonDown(1))
{
anim.SetInteger("condition", 0);
moveDir = Vector3.zero;
}
}
moveDir.y -= gravity * Time.deltaTime;
controller.Move(moveDir * Time.deltaTime);
}
}
解决方案
Vector3 direction = target.position - player.transform.position;
Quaternion finalPlayerRotation = Quaternion.LookRotation(direction);
player.transform.rotation = finalPlayerRotation;
这在某些情况下也有效:
Vector3 direction = target.position - player.transform.position;
player.transform.right /*You may need to change the Right to upper, -upper, -Right depend on the player rotation and the target position*/ = direction;
推荐阅读
- php - 一个 Codeigniter 网站和应用程序在一起
- batch-file - SSIS 使用 DTExec.exe 通过批处理文件运行
- macos - 使用tell通过applescript(osascript)生成新应用程序后获取进程ID
- php - 如何在 PHP 中获取通知/警告作为对象?
- r - 基于R中的列值聚合数据框
- php - 更改配置后 Laravel DB 连接不刷新
- firebase - Firebase CLI 命令不适用于 VS Code Git Bash 终端
- java - 大文本数据的非对称密码算法
- reactjs - 在 mapDispatchToProps 之后找不到函数
- javascript - 如何以编程方式检测离子应用程序中是否开启了飞行模式