forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   следование объекта за мышью (http://forum.boolean.name/showthread.php?t=17064)

Huruffus 12.08.2012 23:29

Ответ: следование объекта за мышью
 
дак она и так самая низшая. Пустышки не имеют роли - на них нет ничего.

Камера и так дочерний по отношению к капсуле. А на капсуле кхэректер контроллер.

pax 12.08.2012 23:32

Ответ: следование объекта за мышью
 
так сделай объект дочерний к камере, сделай из этого объекта камеру

Huruffus 17.08.2012 23:02

Ответ: следование объекта за мышью
 
Спасибо pax!



Дописываю скрипт перемещения главного героя так, чтобы он мог перемещаться в воздухе (с меньшей скоростью).

С моим скриптом происходят такие проблемы: замедляется скорость падения на землю, при перемещении вне земли, гравитация перестаёт действовать на объект, прыжок становится слишком сильным.

Скажите пожалуйста, как это исправить?

PHP код:

using UnityEngine;
using System.Collections;

public class 
char2 MonoBehaviour {
    
//значения скоростей
    
public float speed 6.0F;
    public 
float jumpSpeed 8.0F;
    public 
float gravity;
    
    
//Значение вектора
    
private Vector3 moveDirection Vector3.zero;
    
    
void Start () {
        
renderer.enabled false;
        
        
collider.enabled true;
    }
        
    
void Update () {        
        
CharacterController controller GetComponent<CharacterController>(); //GetComponent - присваивает компонент
        
if (controller.isGrounded) {  //Поведение на земле
            
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0Input.GetAxis("Vertical"));
            
moveDirection transform.TransformDirection(moveDirection); //TransformDirection - Преобразуем Локальные координаты в Глобальные
            
moveDirection *= speed;
            if (
Input.GetKey(KeyCode.Space))
                
moveDirection.jumpSpeed;
            
//Ускорение по нажатию кнопки LShift и замедление по отпусканию
            
if (Input.GetKey (KeyCode.LeftShift)&&(Input.GetKey(KeyCode.W)||
                                                    
Input.GetKey(KeyCode.A)||
                                                    
Input.GetKey(KeyCode.S)||
                                                    
Input.GetKey(KeyCode.D)))                
                
speed 12.0F;
            if (
Input.GetKeyUp(KeyCode.LeftShift)){
                
speed 6.0F;        
                if (
controller.isGrounded)
                    
speed 6.0F; else speed 6.0F;
            }
        }
        if (
controller.isGrounded)
                    
speed speed; else speed 6.0F;
//------------------------------------------------------
        
moveDirection.-= gravity Time.deltaTime;
        if (!
controller.isGrounded) {  //Поведение вне земли. ПРОБЛЕМЫ В ДАННОМ МЕСТЕ!!!
            
moveDirection = new Vector3(Input.GetAxis("Horizontal"), moveDirection.yInput.GetAxis("Vertical"));
            
moveDirection transform.TransformDirection(moveDirection); //TransformDirection - Преобразуем Локальные координаты в Глобальные
            
moveDirection *= speed/2;
        }
        
controller.Move (moveDirection Time.deltaTime); //controller.Move - более сложное движение. Объект скользит по мешу
        
        
controller.detectCollisions true;
    }



pax 22.08.2012 07:52

Ответ: следование объекта за мышью
 
Я бы вынес инпуты GetKey* наружу ифа.
PHP код:

if (controller.isGrounded
    
speed 6.0F; else speed 6.0F

Это условие меня повергло в шок :-D

Это:
PHP код:

if (controller.isGrounded
                    
speed speed; else speed 6.0F

можно записать как
PHP код:

if (!controller.isGroundedspeed 6.0F

ну и
PHP код:

//moveDirection.y -= gravity * Time.deltaTime;        
        
if (!controller.isGrounded) {  //Поведение вне земли. ПРОБЛЕМЫ В ДАННОМ МЕСТЕ!!! 
            
moveDirection = new Vector3(Input.GetAxis("Horizontal"), moveDirection.yInput.GetAxis("Vertical")); 
            
moveDirection transform.TransformDirection(moveDirection); //TransformDirection - Преобразуем Локальные координаты в Глобальные 
            
moveDirection *= speed/2
        }
        
moveDirection.-= gravity Time.deltaTime



Часовой пояс GMT +4, время: 01:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot