Unity3D相机控制

本文介绍了如何在Unity3D中实现相机的视野控制,包括鼠标指针驱动的上下左右移动和滚轮缩放。通过将相机作为游戏对象的子物体,调整其父节点的旋转和移动来达成目标。具体实现分为CameraCrl、Zoom和Pivot三个节点,分别负责左右移动、缩放和上下移动。通过PlayerCameraFreeLook类和PlayerCamera父类的代码控制,实现对目标对象的视野跟随。
摘要由CSDN通过智能技术生成

实现目标:

  1. 视野随着鼠标指针进行上下左右移动
  2. 鼠标滚轮控制视野缩放

实现思路:

将摄像机作为其它游戏对象的子物体,通过获取鼠标输入控制其父节点的旋转、移动来实现相机的视野移动和缩放。

层次结构如下:

CameraCrl节点主要是控制视野左右移动,通过旋转其Y轴即可,该节点的position会和跟随目标的position保持一致

Zoom节点主要是负责控制视野缩放,向跟随目标移动即可,这里一般会做一个缩放距离限制,首先我们会将Zoom的Z轴对准目标节点

Pivot主要负责视野上下移动,同样需要作限制

接下来就是通过代码获取输入,控制这几个参数:

PlayerCameraFreeLook类实现跟随主角以及获取输入控制视野(来自官方DEMO),挂载在CameraCrl上

using System;
using UnityEngine;

public class PlayerCameraFreeLook : PlayerCamera
{
    // This script is designed to be placed on the root object of a camera rig,
    // comprising 3 gameobjects, each parented to the next:

    // 	Camera Rig
    // 		Pivot
    // 			Camera
    // This script is designed to be placed on the root object of a camera rig,
    // comprising 3 gameobjects, each parented to the next:
    protected Transform m_Zoom;
    protected Transform m_Pivot; // the point at which the camera pivots around
    protected Vector3 m_LastTargetPosition;

    [SerializeField] private float m_MoveSpeed = 1f;                      // How fast the rig will move to keep up with the target's position.
    [Range(0f, 10f)] [SerializeField] private float m_TurnSpeed = 1.5f;   // How fast the rig will rotate from user input.
    [SerializeField] private float m_TurnSmoothing = 0.0f;                // How much smoothing to apply to the turn input, to r
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值