• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
wjh_白虎
博客园    首页    新随笔    联系   管理    订阅  订阅

Unity 让物体朝摄像机观察方向移动,已摇杆方向转向

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

[RequireComponent(typeof(CharacterController))]
[RequireComponent(typeof(AudioSource))]
public class PlayerDeviceController : MonoBehaviour
{
    private CharacterController cc;

    public float gravity = 0f;
    public float speed = 1f;
    public float rotateSpeed = 1f;
    public float jumpSpeed = 8.0f;

    private Vector2 scV2 = Vector2.zero;

    private Vector3 moveDirection = Vector3.zero;
    // Use this for initialization
    void Start()
    {
        cc = GetComponent<CharacterController>();
    }

    // Update is called once per frame

    private void FixedUpdate()
    {
        if (cc.isGrounded)
    {
    if (cc.enabled)
    {
        //让物体朝摄像机观察方向移动
        scV2 = UIManager.ScrollCircle.v2;

        Vector3 targetDirection = new Vector3(scV2.x, 0, scV2.y);

        float angle = Camera.main.transform.localEulerAngles.y;
        float angleJoystick = Mathf.Atan2(scV2.x, scV2.y) * 180f / Mathf.PI;

        this.transform.localEulerAngles = new Vector3(0, angleJoystick,0);

        float y = Camera.main.transform.rotation.eulerAngles.y;

        targetDirection = Quaternion.Euler(0, y, 0) * targetDirection;

        transform.Translate(targetDirection * Time.deltaTime * speed, Space.World);

        //transform.Rotate(scV2);
                }
}
else

{
    //先落地
    moveDirection.y -= gravity * Time.deltaTime;
    cc.Move(moveDirection * Time.deltaTime);
    //print (Time.deltaTime);
}

//头朝向始终与摄像机平行
//this.transform.localEulerAngles = new Vector3(0, MainScript.ARCamera.transform.localEulerAngles.y, 0);
}
}

posted @ 2017-11-15 13:31  wjh_白虎  阅读(2683)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3