鼠标旋转视角,摄像机跟随围绕主角,人物移动

{

目录

}

草地+风场+UnityChan卡通渲染场景(一)

目前效果:
鼠标旋转视角,wasd控制移动
在这里插入图片描述
重写了UnityChan的控制代码,因为自带的UnityChanControlScriptWithRgidBody的操作很蹩脚,AD键不是向着左右两边走,而是旋转 ==|| 这。。
在这里插入图片描述
可能各有所好?我最喜欢的巫师3:狂猎和塞尔达传说:荒野之息都是按W向着屏幕的正前方走,AD向着屏幕左边缘和有边缘方向走,通过旋转鼠标来确定方向,所以我也打算这么做。
首先,写了一个相机跟随+转向脚本,思路很简单,
根据鼠标滑动方向旋转摄像机,根据一个设置好的距离调整摄像机到Chan的距离,
可以设置X轴的最大最小旋转角度,
因为总是卡到地下或者墙里,所以用射线检测来检测摄像机是否能继续旋转,比如:摄像机的高度已经很接近地面了,我们就不能让它在向下移动了。
在这里插入图片描述
相机跟随+转向脚本如下:

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

public class Camerafollow : MonoBehaviour {
   
    public Transform Chan;
    [Range(0,180)]
    public float max_X_Euler;
    [Range(-180, 0)]
    public float min_X_Euler;
    [Range(0, 60)]
    public float X_rotateSpeed;
    [Range(0, 60)]
    public float Y_rotateSpeed;
    [Range(1,10)]
    public float XZ_dist;
    [Range(1, 10)]
    public float Y_dist;
    private float current_rotation_X;
    private float current_rotation_Y;
    private float last_rotation_X;
    private float last_rotation_Y;
    private bool[] Xobstacle;
    private bool[] Yobstacle;
	// Use this for initialization
	void Start () {
   
        Xobstacle = new bool[2];
        Yobstacle = new bool[2];
    }
	
	// Update is called once per frame
	void LateUpdate () {
   
        current_rotation_X += Input.GetAxis("Mouse Y") * X_rotateSpeed;
        current_rotation_Y+= Input.GetAxis("Mouse X") * Y_rotateSpeed;
        Xobstacle[0] = Physics.Linecast(transform.position, transform.position + new Vector3(0, -1.5f, 0));
        Xobstacle[1] = Physics.Linecast(transform.position, transform.position + new Vector3(0, -1.5f, 0));
        Yobstacle[0] = Physics.Linecast(transform.position, transform.position + transform.TransformDirection(new Vector3(1, 0, 0)));
        Yobstacle[1] = Physics.Linecast(transform.position, transform.position + transform.TransformDirection(new Vector3(-1, 0, 0)));
        Physics.Linecast(transform.position, transform.position + new Vector3(1, 0, 0));
        current_rotation_X = Mathf.Clamp(current_ro
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值