Hello,
I am modifying the Standart-Third-Person controller. I want to Rotate the player with the script called "ThirdPersonUserControl.cs". The Rotation-value is in the Cam-Script on the mainCamera. So I coded this:
using System;
using System.Collections;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.ThirdPerson
{
[RequireComponent(typeof (ThirdPersonCharacter))]
public class ThirdPersonUserControl : MonoBehaviour
{
private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object
private Transform m_Cam; // A reference to the main camera in the scenes transform
private Vector3 m_CamForward; // The current forward direction of the camera
private Vector3 m_Move;
private bool m_Jump; // the world-relative desired move direction, calculated from the camForward and user input.
private bool crouch = false;
//private Cam camScript;
private void Start()
{
// get the transform of the main camera
if (Camera.main != null)
{
m_Cam = Camera.main.transform;
}
else
{
Debug.LogWarning(
"Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.");
// we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
}
// get the third person character ( this should never be null due to require component )
m_Character = GetComponent();
//camScript = cam.GetComponent("Cam") as Cam;
}
private void Update()
{
if (!m_Jump)
{
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
}
if(Input.GetButton("Fire2")){
//transform.eulerAngles = new Vector3(transform.eulerAngles.x,cam.eulerAngles.y,transform.eulerAngles.z);//* Time.deltaTime;
Quaternion newRotation = Quaternion.LookRotation(transform.position - m_Cam.position, Vector3.up);
newRotation.x = 0.0f;
newRotation.z = 0.0f;
transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, Time.deltaTime * 8);
//Vector3 mouseLook = Vector3(transform.rotation.x,camScript.x,transform.rotation.z);
//transform.rotation = Quaternion.Euler(mouseLook);
}
}
// Fixed update is called in sync with physics
private void FixedUpdate()
{
// read inputs
float h = CrossPlatformInputManager.GetAxis("Horizontal");
float v = CrossPlatformInputManager.GetAxis("Vertical");
if(Input.GetKeyDown(KeyCode.LeftShift)) crouch = !crouch;
// calculate move direction to pass to character
if (m_Cam != null)
{
// calculate camera relative direction to move:
m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized;
m_Move = v*m_CamForward + h*m_Cam.right;
}
else
{
// we use world-relative directions in the case of no main camera
m_Move = v*Vector3.forward + h*Vector3.right;
}
#if !MOBILE_INPUT
// walk speed multiplier
if (Input.GetKey(KeyCode.LeftControl)) m_Move *= 0.5f;
#endif
// pass all parameters to the character control script
m_Character.Move(m_Move, crouch, m_Jump);
m_Character.m_IsAiming = Input.GetButton("Fire2");
m_Jump = false;
if(m_Character.m_IsAiming){
//transform.Rotate(0f,m_Cam.GetComponent().x,0f);
}
}
}
}
But the Compiler says:
The type or namespace name `Cam' could not be found. Are you missing a using directive or an assembly reference?
I added at the top: using System.Collections, error still there.
Thanks in advance.
↧