Настройка обзора мышью.

Общие вопросы о Unity3D

Настройка обзора мышью.

Сообщение Vip_and_Rip 16 мар 2012, 18:59

Решил добавить в игру реалистичности, и присвоить оружию дополнительное управление мышью.
Повесил на оружие этот скрипт:
Синтаксис:
Используется javascript
using UnityEngine;
using System.Collections;

/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add the MouseLook script to the capsule.
///   -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSInputController script to the capsule
///   -> A CharacterMotor and a CharacterController component will be automatically added.

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
///   -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLook : MonoBehaviour {

        public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
        public RotationAxes axes = RotationAxes.MouseXAndY;
        public float sensitivityX = 15F;
        public float sensitivityY = 15F;

        public float minimumX = -360F;
        public float maximumX = 360F;

        public float minimumY = -60F;
        public float maximumY = 60F;

        float rotationY = 0F;

        void Update ()
        {
                if (axes == RotationAxes.MouseXAndY)
                {
                        float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
                       
                        rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
                        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
                       
                        transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
                }
                else if (axes == RotationAxes.MouseX)
                {
                        transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
                }
                else
                {
                        rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
                        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
                       
                        transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
                }
        }
       
        void Start ()
        {
                // Make the rigid body not change rotation
                if (rigidbody)
                        rigidbody.freezeRotation = true;
        }
}

Ограничил его движение по осям и чуть прибавил чувствительности. В теории оружие должно было поворачиваться чуть быстрее "головы", и создавать эффект, будто его разворачивают в руках.
В теории. На деле-же оно вертится вокруг своей оси, как вентилятор, и никакие ограничения не срабатывают.
Хотя пивот я сдвинул к "прикладу".
Есть идеи, как решить эту ужасающе сложную проблему?
Последний раз редактировалось Vip_and_Rip 16 мар 2012, 21:03, всего редактировалось 1 раз.
Аватара пользователя
Vip_and_Rip
UNIт
 
Сообщения: 67
Зарегистрирован: 14 мар 2012, 17:51
Откуда: Алгол, Евразийская Конфедерация, Демократическая Республика Россия
  • ICQ

Re: Невероятно сложная проблема.

Сообщение Anonim 16 мар 2012, 19:18

ne znaiu
За следующие, столь содержательное сообщение, будет предупреждение.
Anonim
UNец
 
Сообщения: 6
Зарегистрирован: 13 мар 2012, 15:03


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15